#python3判断字符串是字母/数字/大小写的系统函数
# 字符串.isalnum()	所有字符都是数字或者字母，为真返回 Ture，否则返回 False。
# 字符串.isalpha() 	所有字符都是字母，为真返回 Ture，否则返回 False。
# 字符串.isdigit() 	所有字符都是数字，为真返回 Ture，否则返回 False。
# 字符串.islower()	所有字符都是小写，为真返回 Ture，否则返回 False。
# 字符串.isupper()	所有字符都是大写，为真返回 Ture，否则返回 False。
# 字符串.istitle()	所有单词都是首字母大写，为真返回 Ture，否则返回 False。
# 字符串.isspace()	所有字符都是空白字符，为真返回 Ture，否则返回 False。

# 给定一个字符串，验证它是否是回文串，只考虑字母和数字字符，可以忽略字母的大小写。
# 输入: "A man, a plan, a canal: Panama"
# 输出: true
class Solution:
    def isPalindrome(self, s: str) -> bool:

        newStr = ''.join(filter(str.isalnum, s.lower()))

        return newStr == newStr[::-1]


# str.join(sequence)
# 返回通过指定字符str连接序列中元素后生成的新字符串。

s1 = "-"
seq = ("r", "u", "n", "o", "o", "b") # 字符串序列
print (s1.join( seq ))


#字符串的预处理 自己老是处理不好浪费很多时间
#比如 "-1/2+1/2+1/3" 中 分解出各个分式 自己写的老是有问题
#题解的思路就很好 把-变+- 然后以+为分隔符就可以分割出分式
class Solution:
    def fractionAddition(self, expression: str) -> str:
        # fraction = [ ( int(exp[0]), int(exp[2]) ) for exp in re.split( '[+-]', expression.strip() ) if exp ]
        # oper = []
        # for char in expression:
        #     if char in '+-':
        #         oper.append(char)

        # if expression[0] not in '+-':
        #     expression = '+' + expression
        # fraction = [ expression[i*4:i*4+4] for i in range(len(expression)//4) ]
        # fraction = [ ( int(exp[0:2]), int(exp[3]) ) for exp in fraction ]
        #吐了 这个字符串的处理还是不熟
        #一开始以‘+-’为分割符 结果有问题
        #然后以四个字符为一个分式 结果还是有问题
        #看了一些题解 发现把‘-’变‘+-’ 然后以+为分隔符 然后再以/为分割符最好
        
        expression = expression.replace('-', '+-')
        fraction = [ exp.split('/') for exp in expression.split('+') if exp ]
        fraction = [ ( int(exp[0]), int(exp[1]) ) for exp in fraction ]
